#ifndef COMMONFORM_H
#define COMMONFORM_H

#include <QWidget>
#include <QVector>
#include <QMediaPlaylist>
#include "musiclist.h"
#include "listitem.h"

namespace Ui {
class CommonForm;
}

enum PageType
{
    LIKE,
    LOCAL,
    RECENT
};

class CommonForm : public QWidget
{
    Q_OBJECT

public:
    explicit CommonForm(QWidget *parent = nullptr);
    ~CommonForm();
    // 提供给主界面的公有方法：设置各自的封面图片和文字
    void setCommonPageTextAndCover(const QString& text, const QString& image);
    // 设置每个页面的类型
    void setPageType(PageType type);
    // 添加页面对应的音乐的方法
    void addMusicToMusicPage(MusicList& musicList);
    // 将这个界面对应的所有歌曲都更新到对应的界面上
    void reFresh(MusicList& musicList);
    // 将各个界面的music都添加到各自的播放列表中
    void addMusicToPlaylist(MusicList& musicList, QMediaPlaylist* playlist);
    // 获取当前页面第 index 首歌曲的 musicId
    QString getMusicIdByIndex(int index);

signals:
    void pageLikeRefresh(bool isLike, const QString& musicId);
    // 点击播放全部的按钮，给主界面发送的信号
    void playAll(PageType type);
    // 双击某个音乐，给主界面发送的信号
    void playByDoubleClicked(PageType type, int row);

private slots:
    // 点击播放全部的按钮，发送一个信号给主界面，播放这个 page 中的所有歌曲
    void on_playAllButton_clicked();

private:
    Ui::CommonForm *ui;

    PageType type;
    // 管理这个 PageType 对应页面所存放的 Music 的 Id
    QVector<QString> musicOfPage;
};

#endif // COMMONFORM_H
